package cn.itcast.nems.journal.service;

import cn.itcast.ic.common.bean.Page;
import cn.itcast.nems.common.PageQueryModel;
import cn.itcast.nems.order.api.JournalDiscountApi;
import cn.itcast.nems.order.dao.entity.JournalDiscount;
import cn.itcast.nems.order.dto.JournalDiscountDTO;
import cn.itcast.nems.order.dto.JournalDiscountQueryDTO;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.lang.NonNull;

public interface JournalDiscountService extends IService<JournalDiscount>, JournalDiscountApi {

    /**
     * 分页查询优惠单
     *
     * @param queryModel 分页查询条件
     * @return cn.itcast.ic.common.bean.Page<cn.itcast.nems.order.dto.JournalDiscountDTO>
     * @author 高昌露
     * @since 2023/12/8 14:44
     */
    Page<JournalDiscountDTO> pageList(PageQueryModel<JournalDiscountQueryDTO> queryModel);

    /**
     * 根据凭单获取凭单详情
     *
     * @param id 凭单ID
     * @return cn.itcast.nems.order.dto.JournalDiscountDTO
     * @author 高昌露
     * @since 2023/12/8 14:45
     */
    JournalDiscountDTO queryById(@NonNull String id);

    /**
     * 保存/编辑草稿
     *
     * @param reqParam 请求参数
     * @return java.lang.String 凭单ID
     * @author 高昌露
     * @since 2023/12/8 14:46
     */
    String saveOrEdit(@NonNull JournalDiscountDTO reqParam);

    /**
     * 逻辑删除
     *
     * @param id 凭单ID
     * @author 高昌露
     * @since 2023/12/8 14:46
     */
    void delete(@NonNull String id);

    /**
     * 提交到工作流
     *
     * @param journalId 凭单ID
     * @return java.lang.String 凭单ID
     * @author 高昌露
     * @since 2023/12/8 14:48
     */
    String commitToBPM(@NonNull String journalId);
}
